package com.ruoyi.fee.mapper;

import java.util.List;
import java.util.Map;

import com.ruoyi.fee.domain.PropertyBill;
import org.apache.ibatis.annotations.Param;

/**
 * 账单信息Mapper接口
 * 
 * @author ruoyi
 * @date 2025-10-27
 */
public interface PropertyBillMapper 
{
    /**
     * 查询账单信息
     * 
     * @param billId 账单信息主键
     * @return 账单信息
     */
    public PropertyBill selectPropertyBillByBillId(Long billId);

    /**
     * 查询账单信息列表
     * 
     * @param propertyBill 账单信息
     * @return 账单信息集合
     */
    public List<PropertyBill> selectPropertyBillList(PropertyBill propertyBill);

    /**
     * 新增账单信息
     * 
     * @param propertyBill 账单信息
     * @return 结果
     */
    public int insertPropertyBill(PropertyBill propertyBill);

    /**
     * 修改账单信息
     * 
     * @param propertyBill 账单信息
     * @return 结果
     */
    public int updatePropertyBill(PropertyBill propertyBill);

    /**
     * 删除账单信息
     * 
     * @param billId 账单信息主键
     * @return 结果
     */
    public int deletePropertyBillByBillId(Long billId);

    /**
     * 批量删除账单信息
     * 
     * @param billIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePropertyBillByBillIds(Long[] billIds);

    // 按房屋和状态查询账单
    List<PropertyBill> selectByHouseAndStatus(@Param("houseId") Long houseId, @Param("status") String status);

    // 统计逾期账单（包含违约金）
    Map<String, Object> selectOverdueStats(@Param("buildingId") Long buildingId);

    // 批量更新账单状态
    int batchUpdateStatus(@Param("billIds") List<Long> billIds, @Param("status") String status);

    List<PropertyBill> selectBatchIds(List<Long> billIds);
}
